package Vistas.Componentes;

import java.sql.SQLException;
import java.util.Calendar;
import java.util.List;

import javax.swing.BoxLayout;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import Vistas.OrdenVista;

import BaseDeDatos.DBProductos;
import Clases.Orden;
import Clases.Producto;

public class OrdenVistaCabecera extends JPanel {
	private static final long serialVersionUID = 1L;
	private JTextField txtFechaAlta;
	public JComboBox jcbProducto;
	private JTextField txtCantidad;
	private JTextField txtFechaEstimada;
	private JTextArea txtDescripcion;
	private Orden orden;
	
	public OrdenVistaCabecera(Orden o, OrdenVista padre) {
		this.orden = o;
		this.txtFechaAlta = new JTextField(10);
		this.jcbProducto = new JComboBox();
		this.txtCantidad = new JTextField(10);
		this.txtFechaEstimada = new JTextField(10);
		this.txtDescripcion = new JTextArea(5,20);

		this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
		
		this.jcbProducto.addActionListener(padre);		
		
		this.add(new JLabel("Fecha de Alta: "));
		this.add(this.txtFechaAlta);
		this.add(new JLabel("Producto: "));
		this.add(this.jcbProducto);
		this.add(new JLabel("Cantidad: "));
		this.add(this.txtCantidad);
		this.add(new JLabel("Fecha Estimada: "));
		this.add(this.txtFechaEstimada);
		this.add(new JLabel("Descripcion: "));
		this.add(this.txtDescripcion);

		if (!this.orden.getEstado().equals(Orden.ESTADO_NUEVA)) {
			this.setValores();
		} else {
			this.CargarProductos();
		}
		
		this.setSize(700, 500);
		this.setVisible(true);
	}

	private void CargarProductos() {
		List<Producto> productoList = null;
		try {
			productoList = new DBProductos().getProductos();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		DefaultComboBoxModel model = new DefaultComboBoxModel();

		model.addElement("");
		
		for (int i = 0; i < productoList.size(); i++) {
			model.addElement(productoList.get(i));	
		}
		
		this.jcbProducto.setModel(model);		
	}
	
	public Producto getProductoSeleccionado() {
		if (this.jcbProducto.getSelectedItem() != "") {
			return (Producto) this.jcbProducto.getSelectedItem();
		}
		return null;
	}
	
	public String getFechaDeAlta() {
		return this.txtFechaAlta.getText();
	}
	
	public Producto getProducto() {
		return (Producto)this.jcbProducto.getSelectedItem();
	}
	
	public Integer getCantidad() {
		return Integer.parseInt(this.txtCantidad.getText());
	}
	
	public String getFechaEstimada() {
		return this.txtFechaEstimada.getText();
	}
	
	public String getDescripcion() {
		return this.txtDescripcion.getText();
	}

	private void setValores() {
		this.txtFechaAlta.setText(this.orden.getFechaAlta());
		this.txtDescripcion.setText(this.orden.getDescripcion());
		this.txtCantidad.setText(this.orden.getCantidad().toString());
		this.txtFechaEstimada.setText(this.orden.getFechaEstimada());
		
		DefaultComboBoxModel model = new DefaultComboBoxModel();
		
		model.addElement(this.orden.getProducto());
		
		this.jcbProducto.setModel(model);
		
		this.txtFechaAlta.setEnabled(false);
		this.txtDescripcion.setEnabled(false);
		this.txtCantidad.setEnabled(false);
		this.txtFechaEstimada.setEnabled(false);
		this.jcbProducto.setEnabled(false);
	}
}
